package com.briup.bookstore.mapper;

import com.briup.bookstore.domain.bean.Order;
import com.briup.bookstore.domain.vo.OrderDetailVO;
import com.briup.bookstore.domain.vo.OrderVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface OrderMapper {

    /**
     * 根据条件查询订单数据
     *
     * @param userId  用户id
     * @param orderId 订单编号
     * @param status  订单状态
     * @return 订单VO列表
     */
    List<OrderVO> queryByConditional(@Param("userId") Integer userId,
                                     @Param("orderId") String orderId,
                                     @Param("status") Integer status);

    /**
     * 根据订单编号查询订单详情数据
     *
     * @param userId  用户id
     * @param orderId 订单编号
     * @return 订单详情VO实体
     */
    OrderDetailVO queryDetailById(@Param("userId") Integer userId,
                                  @Param("orderId") String orderId);

    /**
     * 保存订单数据
     *
     * @param order 订单实体
     */
    void saveOrder(@Param("order") Order order);

    /**
     * 更新订单状态
     *
     * @param orderId 订单编号
     * @param status  订单状态
     */
    void updateStatus(@Param("orderId") String orderId, @Param("status") int status);

    /**
     * 更新订单数据
     *
     * @param order 订单实体
     */
    void updateById(Order order);
}
